package com.zy.面向对象.封装

object Test {

}

// 类名后括号内可以直接声明类变量，相当于构造方法
class Student(var id: Int) {

  var name: String = _
  var age: Int = _

  // 可以重写构造方法，但必须先调用当前类的构造器
  def this(id: Int, name: String, age: Int) {
    this(id)
    this.name = name
    this.age = age
  }

}

// 等价于只定义变量的类
class Student1(var id: Int, var name: String, var age: Int)

// 访问权限
class Person {
  // private 只能当前类和其伴生对象使用
  private var idno: String = _

  // 同类、子类可以访问，同包无关联不能访问
  protected var name: String = _

  // 无修饰符默认为public 但scala中无public修饰符
  var age: Int = _

  // 增加包访问权限，同包也可以使用
  private[封装] var described: String = _
}